#include "File.h"
#include <string>
#include <cstdlib>
#include <dirent.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <time.h>
#include <unistd.h>
#include <list>

File::File() { }

File::~File() { }

std::list<std::string> *File::listFiles(std::string ruta, std::string ext) {
    std::list<std::string> *archivos = new std::list<std::string>();

    struct dirent entry;
    struct dirent *result;

    DIR *directorio = opendir(ruta.c_str());
    if (directorio == NULL) {
        delete archivos;
        return NULL;
    }

    /* Listo los archivos */
    while ((readdir_r(directorio,&entry, &result)==0) && result != NULL) {
        if (entry.d_type != DT_DIR) {
            std::string nomArchivo = entry.d_name;

			/* Filtro por extensión */
            if (nomArchivo.find(ext) != std::string::npos) {
                archivos->push_back(nomArchivo);
            }
        }
    }

    closedir(directorio);
    return archivos;
}
